class Solution {
public:
    /**
     * 判断岛屿数量
     * @param grid char字符型vector<vector<>> 
     * @return int整型
     */
    /*
    线性扫描网络，如果一个结点为1，count++,就以其为根节点，启动深度优先搜索
    在深度优先搜索中将值为1的结点置为0，继续查找
    */
    int solve(vector<vector<char>>& grid) {
        // write code here
        if(grid.empty())
            return 0;
        int ans=0;
        for(int i=0;i<grid.size();i++)
        {
            for(int j=0;j<grid[0].size();j++)
            {
                if(grid[i][j]=='1')
                {
                    ans++;
                    dfs(grid, i,j);
                    
                }
            }
        }
        return ans;
    }
    void dfs(vector<vector<char>>&grid,int i,int j)
    {
        if(i<0||j<0||i>=grid.size()||j>=grid[0].size()||grid[i][j]!='1')
            return;
        grid[i][j]='0'; 
        dfs(grid,i-1,j);
        dfs(grid,i,j-1);
        dfs(grid,i+1,j);
        dfs(grid,i,j+1);
    }
};